package com.dc.designPattern._18_memento.impl;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * Description: 备忘录模式_原对象_游戏角色
 * @author: gdc
 * @date: 2021/6/4
 * @version 1.0
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
public class GameRole {

    /**
     * 角色名字
     */
    private String name;
    /**
     * 攻击力
     */
    private Integer vit;
    /**
     * 防御力
     */
    private Integer def;

    /**
     * 创建 备忘录对象 ,即根据当前的状态得到 Memento
     */
    public Memento createMemento(){
        return new Memento(vit, def);
    }


    /**
     * 通过备忘录对象，恢复原对象的数据状态
     * @param memento               备忘录对象
     */
    public void recoverGameRoleFromMemento(Memento memento){
        this.vit = memento.getVit();
        this.def = memento.getDef();
    }

    /**
     * 展示原对象的信息
     */
    public void display(){
        System.out.println("游戏角色" + name + ", 当前的攻击力：" + getVit() + ", 防御力：" + getDef());
    }
}
